import store from "@/store"
function HTTP(obj, config) {

	let defaultConfig = {
		isRes: false,
		loading: false
	}

	config = { ...defaultConfig,
		...config
	}


	// 如果需要显示loading,mask防止点击穿透
	config.loading && uni.showLoading({
		title: '加载中',
		mask: true
	});

// 企业端：
// client_id=enterprise
// 地址：http://xiaoqizhipin.com/api/enterprise

// 中介端：
// Authorization：Basic aW50ZXJtZWRpYXJ5OmludGVybWVkaWFyeQ==
// client_id=intermediary
// 地址：http://xiaoqizhipin.com/api/intermediary

// wiki：http://xiaoqizhipin.com/api/doc.html#/home					
	return new Promise((resolve, reject) => {

		let options = {
			url: "",
			method: "GET",
			data: {},
			dataType: "json",
			header: {
				"content-type": "application/x-www-form-urlencoded",
				'Authorization':'Basic dXNlcmNlbnRlcjp1c2VyY2VudGVy',
			},
			success: (res) => {
				console.log("HTTP请求结果：",res)
				uni.hideLoading();
				// 状态码为200
				if (res.statusCode == 200) {
					let data = res.data;
					//自动校验用户是否登录过期
					if (data.code == "01") {
						store.dispatch("reLogin");
						return;
					}

					//返回 { code:10000,msg:"消息",data:[] }
					if (config.isRes) {
						resolve(data)
					}
					// 返回 data:[]
					else {
						// if (data.code == "200") {
						// 	resolve(data.data||true)
						// } else {
						// 	wx.showToast({
						// 		title: data.message,
						// 		icon: "none",
						// 		duration: 2000
						// 	})
						// 	reject(data.message);
						// }
						resolve(res.data)
					}
				} else {
					reject("HTTP:状态码异常！");
				}
			},
			fail: (err) => {
				uni.hideLoading();
				uni.showToast({
					title: "网络异常，请稍后再试!",
					icon: "none",
				})
				reject("网络异常，请稍后再试!");
			},
			complete: () => {}
		}

		options = { ...options,
			...obj
		};
		
		const Token = uni.getStorageSync("token");
		
		// 如果Token存在，使用Bearer Token认证
		if (Token) {
			options.header.Authorization = `Bearer ${Token}`;
		}
		
		
		if (options.url && options.method) {
			uni.request(options);
		} else {
			uni.showToast({
				title: 'HTTP：缺失参数',
				icon: "none",
				duration: 2000
			})
		}
	})
}

// 检查用户是否已登录
function checkLogin() {
	const token = uni.getStorageSync("token");
	const userInfo = uni.getStorageSync("userInfo");
	
	// 如果token和用户信息都存在，认为用户已登录
	if (token && userInfo) {
		// 确保store中也有用户信息
		if (!store.state.hasLogin) {
			store.commit('SET_TOKEN', token);
			store.commit('SET_USERINFO', userInfo);
		}
		return true;
	}
	return false;
}

// 跳转到主页（如果已登录）或登录页（如果未登录）
function navigateByLoginState(loginPagePath = '/pages/login/loginPwd') {
	if (checkLogin()) {
		// 已登录，跳转到主页
		uni.switchTab({
			url: '/pages/index/index'
		});
		return true;
	} else {
		// 未登录，跳转到登录页
		if (getCurrentPages().length > 0) {
			let currentRoute = getCurrentPages()[getCurrentPages().length - 1].route;
			if (currentRoute !== loginPagePath.replace(/^\//, '')) {
				uni.navigateTo({
					url: loginPagePath
				});
			}
		} else {
			uni.navigateTo({
				url: loginPagePath
			});
		}
		return false;
	}
}


export default {
	GET(url, data = {}, config) {
		return HTTP({
			url,
			data,
			method: "GET"
		}, config);
	},
	POST(url, data = {}, config) {
		return HTTP({
			url,
			data,
			method: "POST"
		}, config);
	},

	POSTformdata(url, data = {}, config) {
		return HTTP({
			url,
			data,
			method: "POST"
		}, config);
	},
	
	// 导出登录状态检查和导航方法
	checkLogin,
	navigateByLoginState
}
